함수형 프로그래밍이란
좋은 프로그래밍은 사용성, 성능, 확장성, 기획 변셩에 대한 대응력이 높은것
이런 것들을 효율적이고 생산적으로 이루는 일이 성공적인 프로그래밍이다.
함수형 프로그래밍은 성공적인 프로그래밍을 위해 조합성을 강조하는 패러다임이다.
⇒ 순수 함수를 만든다. 모듈화 수준을 높인다.
⇒ 오류를 줄이고 안정성을 높인다. 생산성을 높인다.
순수함수:
동일한 인자를 주면 항상 동일한 결과가 나온다. 상위 스코프에서 영향을 받지 않는다.
사이드 이펙트가 없다. 다른 것에 영향을 미치지 않는다.
⇒ 외부의 데이터를 변경시키지 않고, 변형된 새로운 데이터를 다루어 나간다.
⇒ 평가시점이 중요하지 않는다.
⇒ 함수를 인자로 넘기거나, 서로 다른 공간에서 평가를 시켜도 같은 값을 내보내기 때문에 안전하다.
함수 내부에서 데이터가 어떻게 생겼는지에 대해서 알 수 없다.
⇒ 다용성이 높다. 관심사를 분리한다.
일급함수:
함수를 값으로 다룰 수 있다. 변수에 담겨서 인자로 전달되거나, 원할 때 실행시킬 수 있다.
함수가 순수 함수들을 인자로 받아 조합해나간다 ⇒ 함수형 프로그래밍
함수형 사고방식은 문제의 해결 방법을 동사(함수)들로 구성(조합)하는 것
객체지향은 데이터 기준, 함수형은 함수 기준 ⇒ 데이터의 형태를 함수에 맞춰야 한다.